rem @echo off
if exist "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" (
	call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
)
if exist "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" (
	call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat
)

if exist "C:\Program Files\7-Zip\7z.exe" GOTO ZIP1
GOTO AFTERZIP

:ZIP1
call :PROC_DEBUG ZIP1
set zipcmd="C:\Program Files\7-Zip\7z.exe"
call :PROC_DEBUG zipcmd=%zipcmd%
GOTO AFTERZIP


:AFTERZIP


set DEV=msbuild
set proj_dir=d:\ProgNetComponents
set Konfig=Release
set dist_dir=d:\ProgNet\
set dist_dir_install=d:\ProgNet\Instalki\

if "%USERNAME%"=="plukom" (
	set proj_dir=C:\ProgNet\ProgNetExtensions
	set dist_dir=C:\ProgNet Apps\
	set dist_dir_install=C:\ProgNet Apps\Instalki\
)

set Konfig=Release
set cur_dir=%CD%
set appFile=

:start
call :PROC_CLS
echo.
echo B Budowanie
echo U Uruchamianie
echo K Kopiowanie
echo X Wyjscie
echo --------------------------------
echo.
set /p opt=Wybierz Opcje: 
set opt=%opt:~0,1%
set startopt=%opt%

if /I "%opt%" EQU "b" goto Budowanie
if /I "%opt%" EQU "u" goto Uruchamianie
if /I "%opt%" EQU "k" goto Kopiowanie
if /I "%opt%" EQU "x" exit
goto start

:Budowanie
call :PROC_CLS
set exe=
echo Buduj Projekt(y):
echo.
call :PROC_ECHO_PROJ_MAIN
echo 4 ProgNetComponents
echo 5 ProgNetComponentsDx
echo 6 ProgNetComponents + ProgNetComponentsDx
echo 7 ProgNetComponents + ProgNetComponentsDx + SqlCeManager
echo 8 ProgNetComponents + ProgNetComponentsDx + Wydatki
echo 9 ProgNetComponents + ProgNetComponentsDx + BuildHelper
call :PROC_ECHO_START

set opt=0
set /p opt=Wybierz Projekt: 
call :PROC_READ_KONFIG
set opt=%opt:~0,1%
set proj=%opt%
if "%opt%"=="1" goto konfig_check
if "%opt%"=="2" goto konfig_check
if "%opt%"=="3" goto konfig_check
if "%opt%"=="4" goto konfig_check
if "%opt%"=="5" goto konfig_check
if "%opt%"=="6" goto konfig_check
if "%opt%"=="7" goto konfig_check
if "%opt%"=="8" goto konfig_check
if "%opt%"=="9" goto konfig_check
call :PROC_START_EXIT
goto Budowanie

:PROC_PODAJ_KONFIG
call :PROC_CLS
if DEFINED exe (
		for /f "tokens=1,2" %%i IN ('dir /tw %app%\bin\Debug\%exe%^| find /i "%exe%"') do set date_debug= [ %%i %%j ]
		for /f "tokens=1,2" %%i IN ('dir /tw %app%\bin\Release\%exe%^| find /i "%exe%"') do set date_release= [ %%i %%j ]
)
echo Konfig:
echo.
echo D Debug   %date_debug%
echo R Release %date_release%
call :PROC_ECHO_START
set opt=0
set /p opt1=Wybierz Konfig:
set opt=x%opt1:~0,1%
call :PROC_READ_KONFIG
set opt=%opt1%
call :PROC_START_EXIT
goto:EOF

:konfig_check
if "%Konfig%"=="" (
	call :PROC_PODAJ_KONFIG
	if "%Konfig%"=="" goto konfig_check
) 
	if /I "%startopt%" EQU "b" (
		if "%proj%"=="1" call :BUILD_SQL_MANAGER
		if "%proj%"=="2" call :BUILD_WYDATKI
		if "%proj%"=="3" call :BUILD_BH
		if "%proj%"=="4" call :BUILD_COMP
		if "%proj%"=="5" call :BUILD_COMP_DX
		if "%proj%"=="6" (
			call :BUILD_COMP
			call :BUILD_COMP_DX
		)
		if "%proj%"=="7" (
			call :BUILD_COMP
			call :BUILD_COMP_DX
			call :BUILD_SQL_MANAGER
		)
		if "%proj%"=="8" (
			call :BUILD_COMP
			call :BUILD_COMP_DX
			call :BUILD_WYDATKI
		)
		if "%proj%"=="9" (
			call :BUILD_COMP
			call :BUILD_COMP_DX
			call :BUILD_BH
		)
		pause
		goto Budowanie
	)
if /I "%startopt%" EQU "k" (
	call :PROC_SET_EXE
	call :COPY_PROC
	goto Kopiowanie
)

:PROC_SET_EXE
if "%proj%"=="1" (
	set exe=SqlCeManager.exe
	set app=SqlCeManager
)
if "%proj%"=="2" (
	set exe=Wydatki.exe
	set app=Wydatki
)
if "%proj%"=="3" (
	set exe=BuildHelper.exe
	set app=BuildHelper
)
set appFile=%dist_dir%%app%\%exe%
goto:EOF

:BUILD_COMP
set sln=ProgNetComponents\ProgNetComponents.sln
call :BUILD_PROC
goto:EOF

:BUILD_COMP_DX
set sln=ProgNetComponentsDx\ProgNetComponentsDx.sln
call :BUILD_PROC
goto:EOF

:BUILD_SQL_MANAGER
set sln=SqlCeManager\SqlCeManager.csproj
call :BUILD_PROC
goto:EOF

:BUILD_WYDATKI
set sln=Wydatki\Wydatki.csproj
call :BUILD_PROC
goto:EOF

:BUILD_BH
set sln=BuildHelper\BuildHelper.csproj
call :BUILD_PROC
goto:EOF

:Uruchamianie
set exe=
call :PROC_CLS
echo.
echo Uruchamianie:
call :PROC_ECHO_PROJ_MAIN
call :PROC_ECHO_START

set opt=0
set /p opt=Wybierz Projekt: 
set proj=%opt:~0,1%
call :PROC_START_EXIT
call :PROC_SET_EXE

if DEFINED exe (
echo appFile=%appFile%
	if exist "%appFile%" (
		start "%app%" "%appFile%"
	) else (
		echo.
		echo Plik %appFile% nie istnieje.
		pause
	)
)
goto Uruchamianie

:BUILD_PROC
echo.
set line1=#########################################################################################
set line2=#                                                                                       #
set line3=#      Budowanie %sln%; Konfig: %Konfig%                                                #
set line4=#      Koniec budowania %sln%; Konfig: %Konfig%                                         #
set line3=%line3:~0,88%#
set line4=%line4:~0,88%#

echo %line1% 
echo %line2% 
echo %line2% 
echo %line3% 
echo %line2% 
echo %line2% 
echo %line1% 
echo.
echo.
"%DEV%" "%proj_dir%\%sln%" /t:Rebuild /p:Configuration=%Konfig%
echo.
echo.
echo %line1% 
echo %line2% 
echo %line2% 
echo %line4% 
echo %line2% 
echo %line2% 
echo %line1% 
echo.
echo.
goto:EOF

:kopiowanie
call :PROC_CLS
set exe=
echo Kopiowanie:
call :PROC_ECHO_PROJ_MAIN
call :PROC_ECHO_START

set opt=0
set /p opt=Wybierz Projekt: 
set run_exe=%opt:~2,1%

call :PROC_READ_KONFIG
set opt=%opt:~0,1%
set proj=%opt%
CALL :PROC_SET_EXE
call :PROC_START_EXIT
if DEFINED exe goto konfig_check
goto Kopiowanie

:COPY_PROC
echo.
set appdistdir=%dist_dir%%app%
set appdistdirinstall=%dist_dir_install%%app%
set appssrcdir=%CD%\%app%\bin\%Konfig%
rem  Dist Dir
if not exist "%appdistdir%" MD "%appdistdir%"
echo kopiowanie do %appdistdir%
echo.

%appdistdir:~0,2%
cd "%appdistdir%"
del /Q /F *.dll
del /Q /F *.exe
echo.
copy "%appssrcdir%\*.dll" "%appdistdir%\" /Y
echo.
copy "%appssrcdir%\*.exe" "%appdistdir%\" /Y
echo.

rem Instal Dir
CALL :INSTALL_YES
if /I "%askinstall%"  EQU "Y" call :ASK_INSTALL
rem set instal_op=N zeby nie kopiowac do install
if /I "%instal_op%" EQU "Y" CALL :COPY_INSTALL

%cur_dir:~0,2%
cd "%cur_dir%"
if /I "%run_exe%" EQU "Y" (
	echo Uruchamianie %exe%
	start "%app%" "%appdistdir%\%exe%"
)
if /I "%instal_op%" EQU "Y" pause

goto:EOF

:COPY_INSTALL
if not exist "%appdistdirinstall%" MD "%appdistdirinstall%"
echo kopiowanie do %appdistdirinstall%
echo.
%appdistdirinstall:~0,2%
cd "%appdistdirinstall%"
del /Q /F *.dll
del /Q /F *.exe
echo.
copy "%appssrcdir%\*.dll" "%appdistdirinstall%\" /Y
echo.
copy "%appssrcdir%\*.exe" "%appdistdirinstall%\" /Y
echo.
del /f /q "%appdistdirinstall%\*.vshost.exe"
echo.

if "%zipfiles%" EQU "Y" call :PROC_ZIP

GOTO:EOF


:ASK_INSTALL
set /p instal_op2=Kopiowac do katalogu instalek (Y,N): 
set instal_op=X
if /I "%instal_op2%" EQU "Y" CALL :INSTALL_YES
if /I "%instal_op2%" EQU "T" CALL :INSTALL_YES
if /I "%instal_op2%" EQU "N" CALL :INSTALL_NO
if /I "%instal_op%" EQU "X" CALL :ASK_INSTALL
goto:EOF

:INSTALL_YES
set instal_op=Y
goto:EOF

:INSTALL_NO
set instal_op=N
goto:EOF

:PROC_ECHO_START
echo.
echo S Start
echo X Wyjscie
echo --------------------------------
echo.
goto:EOF

:PROC_ECHO_PROJ_MAIN
echo 1 SqlCeManager
echo 2 Wydatki
echo 3 BuildHelper
goto:EOF

:PROC_START_EXIT
if /I "%opt%" EQU "s" goto start
if /I "%opt%" EQU "x" exit
goto:EOF

:PROC_READ_KONFIG
set opt2=%opt:~1,1%
set Konfig=
if /I "%opt2%" EQU "d" set Konfig=Debug
if /I "%opt2%" EQU "r" set Konfig=Release
goto:EOF

:PROC_ZIP
if not defined zipcmd GOTO PROC_ZIP_END1
set appver=
set /p appver=Podaj wersje: 
set zipname=%app%%appver%_install.exe
set zipfilename=%dist_dir_install%%zipname%
set zipdir=%appdistdirinstall%

call :PROC_DEBUG PROC_ZIP
call :PROC_DEBUG zipname= %zipname%
call :PROC_DEBUG zipfilename= %zipfilename%
call :PROC_DEBUG zipdir= %zipdir%

if "%zipnew%" EQU "Y" call :PROC_UPDATE_ZIP_NAME
if exist "%zipfilename%" del /q /f "%zipfilename%"

echo Tworzenie zip'a %zipname%
echo.
CD %zipdir%
set zipcmdex=%zipcmd% a -sfx7z.sfx "%zipfilename%" "*"
%zipcmdex%
call :PROC_DEBUG 7z command: %zipcmdex%
goto PROC_ZIP_END2
:PROC_ZIP_END1
echo Brak pakera!
:PROC_ZIP_END2
goto:EOF

:PROC_UPDATE_ZIP_NAME
call :PROC_DEBUG PROC_UPDATE_ZIP_NAME
set zipfileno=1
:F_START
if exist "%zipfilename%" GOTO UPD_F
GOTO END_F
:UPD_F 
set zipname=%app%%appver%_install(%zipfileno%).exe
set zipfilename=%dist_dir_install%%zipname%
set /a zipfileno+=1 
GOTO F_START
:END_F
goto:EOF

:PROC_CLS
call :PROC_KONFIGURACJA
cls
goto:EOF

:PROC_DEBUG
rem echo DEBUG : %*
goto:EOF

:PROC_KONFIGURACJA
rem -------------- Konfiguracja --------------
set zipfiles=Y
set zipnew=N
set askinstall=Y
rem ------------------------------------------
GOTO:EOF